/**
 * 
 */
//ajax封装类，控制器需要进行ajax交互时调用此方法
//参数 obj 控制器传过来的对象，包含 url，method（不传默认用post），operate:表示控制器调用的操作类型，对应不同的回调函数，
function myAjax(obj){
	obj.method = typeof(obj.method)==undefined?'post':obj.method
	//obj.method = typeof(obj.method)==undefined?'post':obj.method		
/*	var obj = arguments[2]||'default';
	var conf = arguments[3]||{};
	var method = arguments[4]||'post';*/
	this.request = function(){
		Ext.Ajax.request({
			url:obj.url,
			params:obj.data,
			method:obj.method,
			timeout:2000,
			success:function(response,opts){							
			var response =	Ext.util.JSON.decode(response.responseText);
			switch(obj.operate){
				case 'window':  //弹窗类型，操作完成后只进行弹窗提示
						if(response.success){														
							Ext.Msg.alert('提示',response.msg);	
							//obj.record.store.reload();
							if(obj.record !== undefined){
								obj.record.store.reload();
							}
							if(obj.record2 !== undefined){
								obj.record2.store.reload();
							}
							obj.win.close();							
						}else{
							Ext.Msg.alert('保存结果',response.msg);				
						} break;
				case 'del':  //删除类型，删除完成后前端对应的行要remove掉
						if(response.success){
							Ext.Msg.alert('提示',response.msg);
							obj.st.remove(obj.rows);
						}else{
							Ext.Msg.alert('提示',response.msg);
						} break;
				case 'update':  //更改类型，操作完成后前端grid进行update更新操作
						if(response.success){			
							Ext.Msg.alert('提示',response.msg);								
								obj.form.updateRecord();						
								obj.record.commit();		
								obj.win.close();	
						}else{					
							Ext.Msg.alert('提示',response.msg);				
						} break;
				case 'updateDetail':  //更改自己用户详情里面的个人信息，更改完成后会在个人详情里自动更改成修改后的信息
						if(response.success){			
							Ext.Msg.alert('提示',response.msg);															
								obj.win.close();
								Ext.getCmp('staffdetail').getForm().setValues(response.data);
								Ext.getCmp("myImage").getEl().dom.src = PUBLIC+response.data.photo;							
						}else{					
							Ext.Msg.alert('提示',response.msg);				
						} break;
				case 'loadDetail':  //加载数据											
						Ext.getCmp("myImage").getEl().dom.src = PUBLIC+response.data.photo;			
						obj.form.getForm().setValues(response.data);
					  break;
				case 'updateSelf':  //点击修改按钮弹窗并加载自己的信息到表单											
						//var win = Ext.widget('staffedit');					
						obj.win.down("form").getForm().setValues(response.data);						
						obj.win.show();
					 break;
			/*    case 'updatePwd': //加载数据到user表单 											
						var win = Ext.widget('user');
						win.down("form").getForm().setValues(response.data);
						win.show();
				    break;*/
			   // case 'aaa': //加载数据到user表单 											
					/*var win = Ext.widget('user');
					win.down("form").getForm().setValues(response.data);
					win.show();*/
			    	
			
			    //break;	 
				default:Ext.Msg.alert('提示',response.msg);
			}
			}
		})
	}	
};


/**
 * 陈玉琦++
 * 全局对象
 */
var smsObj = {
	//ajax.requeset请求
	ajax: function(obj){
		Ext.Ajax.request({
			url: obj.url,
			method: 'post',
			params: obj.params,
			timeout: 2000,
			success: function(response, opts){
				//后台操作成功后返回的信息
				var resObj = Ext.decode(response.responseText);
				
				//如果obj中有func属性，表示自己定义请求成功后的操作
				if(obj.func){
					//存在该store，表示删除操作。删除某些选中的行，不需要弹出window。func内会有成功的提示信息。
					//store的删除操作，在alert的回调函数内执行。
					if(obj.store){
						obj.func(resObj, obj.store);
					}else if(obj.win){
						//存在win，表示添加或者修改操作，后台操作完毕后，前台页面弹出成功提示，并且要destroy该window
						//win的destroy操作，在alert的回调函数内执行。
						obj.func(resObj, obj.win);
					}else{
						//这里只是针对在用户列表页面，点击设置角色按钮，弹出window，给用户设置角色
						//需要把所有可用角色列出来。由于checkboxgroup没有store配置项，所以要手动请求数据再组装该组件
						obj.func(resObj);
					}
				}else{
					//默认操作
					Ext.Msg.alert('恭喜', resObj.msg);
				}
			},
			failure: function(res, opts){
				var resObj = Ext.decode(res.responseText);
				Ext.Msg.alert('很遗憾', resObj.msg);
			}
		});
	},
	
	//form的submit方法
	submit: function(obj){		
		obj.form.submit({
			url: obj.url,
			method: 'post',
			params: obj.params,
			timeout: 2000,
		    success: function(form, action) {
		    	if(obj.func){
		    		// 有参数refresh，表示grid的store需要load。
		    		// if(obj.funcType == 'refresh'){
		    		// 	obj.func(obj.win, action);
		    		// }else{
		    		// 	obj.func(obj.win, action);
		    		// }
		    		obj.func(obj.win, action);					
				}else{
					var resObj = Ext.decode(res.responseText);
					Ext.Msg.alert('恭喜', resObj.msg);
				}
		    },
		    failure: function(form, action) {		    	
		        switch (action.failureType) {
		            case Ext.form.action.Action.CLIENT_INVALID:
		                Ext.Msg.alert('警告', '客户端传参有误，请检查后重试~');
		                break;
		            case Ext.form.action.Action.CONNECT_FAILURE:
		                Ext.Msg.alert('警告', '请求失败，请重试~');
		                break;
		            case Ext.form.action.Action.SERVER_INVALID:
		            	Ext.Msg.alert('警告', action.result.msg);
		       }
		    }
		});
	},

	/**
	 * 天气查询
	 * @param panel 放在viewport的center区域的一个tabPanel。
	 * @param city 要查询天气的城市，为空则上海。
	 */
	ToolWeatherforecast: function(panel, city){	
		var citys = (city=='') ? '上海' : city;  
		Ext.Ajax.request({
			url: ROOT + '/index.php/Home/Tool/getWeatherforecast',
			params: {city: citys},
			method: 'get',
			timeout: 2000,
			success: function(res, opts){
				var data = Ext.decode(res.responseText);
				//6个指数的数据数组
				var indexes = data.results[0].index;
				//4天天气的数组
				var weatherData = data.results[0].weather_data;
				
				panel.down('panel').down('panel').setData({title: '当前城市：'+ data.results[0].currentCity});
				
				//上部的左侧
				//得到4个容器panel的父容器
				var topLeftPanel = panel.queryById('panel_top').queryById('panel_top_left');
				//4个容器
				var allLeftPanel = topLeftPanel.query('panel[cls=panel_top_left_all]');//4个容器panel				
				//天气情况
				Ext.each(allLeftPanel, function(item, index){
					Ext.each(item.query('panel'), function(item, index2){//每个容器下有6个小panel用于存放天气详情
						if(index2 == 0){
							item.setData({html: citys + '  ' + weatherData[index]['date']});
						}else if(index2 == 1){
							item.setData({html: '<img src="'+ weatherData[index]['dayPictureUrl'] +'" >'});
						}else if(index2 == 2){
							item.setData({html: '<img src="'+ weatherData[index]['nightPictureUrl'] +'" >'});
						}else if(index2 == 3){
							item.setData({html: weatherData[index]['weather']});
						}else if(index2 == 4){
							item.setData({html: weatherData[index]['wind']});
						}else if(index2 == 5){
							item.setData({html: weatherData[index]['temperature']});
						}						
					});
				});
				
				//上部的左侧
				//得到4个容器panel的父容器
				var topRightPanel = panel.queryById('panel_top').queryById('panel_top_right');
				//4个容器
				var allRightPanel = topRightPanel.query('panel[cls=panel_top_right_all]');//4个容器panel
				//各种指数
				Ext.each(allRightPanel, function(item, index){
					Ext.each(item.query('panel'), function(item, index2){//每个容器下有6个小panel用于存放天气详情
						if(index2 == 0){
							item.setData({html: indexes[index]['title']});
						}else if(index2 == 1){
							item.setData({html: indexes[index]['zs']});
						}else if(index2 == 2){
							item.setData({html: indexes[index]['tipt']});
						}else if(index2 == 3){
							item.setData({html: indexes[index]['des']});
						}					
					});
				});
			},
			failure: function(res, opts){
				console.log(res);
			},
		});
	}	
};